1. Field of the Invention
Embodiments of the present invention generally relate to cluster management and, more particularly, to a method and apparatus for coordinating service execution within a shared file system environment to optimize cluster performance.
2. Description of the Related Art
In a typical computing environment, enterprises utilize one or more resources (i.e., hardware and/or software) to execute various operations (e.g., business transactions, administration, resource management, manufacturing, and/or the like that generate a significant amount of data, which is stored on one or more storage systems (e.g., hard drives, disk drives, disk arrays, Network Attached Storage (NAS) appliances, Storage Area Network (SAN) devices, and the like).
To achieve flexible and optimum utilization of the one or more storage systems, one or more clusters (e.g., computer clusters) are configured to share the storage device amongst one or more nodes (i.e., physical machines, virtual machines and/or the like). Software within the nodes may be configured to mount a particular file system (e.g., a Cluster File System (CFS)) on the shared storage device and access data within a shared file system environment. As a result, one or more applications concurrently share file data through the nodes of the cluster that hosts the particular file system (i.e., the CFS).
It is highly desirable to run various services (e.g., data backup, replication, archiving, data leakage prevention, and/or the like) in order to manage and/or protect file data (e.g., spreadsheets, documents, and the like) that is stored in the shared storage. An administrator may desire to run these services to protect the file data embedded in a NAS appliance. Subsequently, the various services access (i.e., scan and/or read) the file data from the shared storage. For example, during backup operation, the service may read a file from the shared NAS appliance and send a backup image of the file to a backup server.
Within the shared file system environment, the NAS appliance provides non-shared access and shared access to particular file data. In non-shared access, an application running on a node does not share the particular file data with another application running on different node. In shared access, a service may require access to the particular file data via a node that is different from the node through which the application accesses the particular file data. For example, a virus scan service running on a particular node may look for a virus signature within a file (e.g., document file) that is accessed by an application (e.g., MICROSOFT Word) running on other node. As a result, the particular file data needs to be shared amongst the applications and services running on different nodes of the cluster.
In order to achieve shared access, the file data must maintain point-in-time consistency within the shared file system environment. As a result, overhead information (e.g., appropriate locking, ownership, and the like) is communicated between two or more nodes accessing a same set of files, which consumes various computer resources (e.g., a network bandwidth capacity, a processor capacity and/or the like). Sharing the same file data with a service (e.g., a file scanning service) running on a node causes a longer access time for the application that is running on a different node. If a particular service running on the particular node is accessing the particular file data, then the application running on the different node cannot access the particular file data because access is locked by the particular service. Consequently, sharing access to the file data amongst the services and the user applications degrades a performance and a stability of the cluster within the shared cluster file system environment.
Therefore, there is a need in the art for a method and apparatus for coordinating service execution within a shared file system environment to optimize cluster performance.